Wireless communication devices are incredibly widespread in today's society. For example, people use cellular phones, smart phones, personal digital assistants, laptop computers, pagers, tablet computers, etc. to send and receive data wirelessly from countless locations. Moreover, advancements in wireless communication technology have greatly increased the versatility of today's wireless communication devices, enabling users to perform a wide range of tasks from a single, portable device that conventionally required either multiple devices or larger, non-portable equipment.
Various mobile device applications, such as navigation aids, business directories, local news and weather services, or the like, leverage knowledge of the position of the device. In various cases, the position of a mobile device is identified via motion tracking with respect to the device. In one currently employed technique, device motion is represented as a vector in order to enable motion tracking by continuously monitoring the heading of the vector. The orientation of a motion vector relative to its corresponding device is assumed constant and obtained via calibration and/or other initial measurements. Subsequently, changes to the orientation of the device with respect to the earth are tracked, in turn enabling continuous tracking of the heading of the motion vector.
In techniques such as that described above, a reference axis is inherently involved in the heading computation. More particularly, the heading is composed of two components: the direction of a reference axis of a coordinate frame of the device with respect to the earth, and the relative angle between the projection of the reference axis onto the horizontal plane with respect to the earth and the direction of motion. However, as the reference axis approaches vertical, inaccuracies occur and, in the case of a fully vertical reference axis, a numerical singularity and computational failure occur. One currently employed technique replaces the reference axis with another axis when the original reference axis approaches vertical, thereby mitigating the effects of a numerical singularity at the cost of higher computational complexity.